package com.teaching.controller;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import com.teaching.dao.TeacherDAO;
import com.teaching.entity.Teacher;
import com.teaching.entity.User;

@Controller
// @RequestMapping("teacher")
public class TeacherController {
	/**
	 * 处理与教师相关的请求: 具体有哪些？
	 * 搜索教师：search
	 * 教师详情页：teacherDetailsPage
	 * 教师个人主页：teacherPage
	 * 
	 * 先看一下前半部分运行的效果
	 * 
	 */
	TeacherDAO teacherDAO=new TeacherDAO();
	
	@RequestMapping("search")
	public String search(Integer grade, Integer course, Map<String, Object> map) {
		// 直接查询数据，返回教师列表
		// 这个是在控制台输出的，给我们debug用的
		System.out.println("查询老师年级："+grade.toString()+"课程："+course.toString());
		// 对，DAO查找到数据，然后teacherlist接收数据，接收返回值。这都是局部变量啊！一点也不难啊......
		List<Teacher> teacherlist=teacherDAO.getTeachers(grade, course);
		// map就直接发送给前端了，map就是一个容器，能放key-value对，放多少个都行，这是java自带的类型。
		// map还需要学？？？它就这么简单，就这样声明，添加数据，就能用了？为什么非得去学？你还是去学吧！
		// 只要放进map就可以了，前端就能读取到
		map.put("teacherList", teacherlist);
		return "homePage";
	}
	// 教师注册后，应该填写教师的具体信息
	// 所以我们写一个保存老师的页面和控制器
	
	/* 这五项没有对应的输入，所以现在有两种解决方案，
	 * 一，建一个比较小的teacher类来接收，
	 * 二，使用model attribute注解来预处理
	 * 三，直接接受
	 * private Integer teacherID;
	 * private Integer experience;
	 * private Integer sold;
	 * private boolean degree;
	 * private boolean qualification;
	 * */
	
	// 这里的确有问题，因为我们现在还没有教师ID，所以没有惟一的标志符
	// 可以把username做一个哈希
	@RequestMapping("teacherModify")
	public String comTeacher(String name, Integer gender, String university, Integer course,
	                       Integer grade, Integer age, Integer fee, String address){
	    //get the user from the database
	    Teacher teacher = new Teacher(name, gender,university,course,grade,age,fee,address);
	    //应该查一下数据库，如果有此老师，就修改数据，否则就新建一个老师
	    if (teacherDAO.Have(teacher.getTeacherID())) {
	    	teacherDAO.ModifyTeacher(teacher);
	    }
	    else {
			teacherDAO.addTeacher(teacher);
		}
	    // 教师应该返回个人主页的，我们先把系统主页返回一下，做个测试
	    return "homePage";
	}
	
	
	//个人主页
	@RequestMapping("teacherPage")
	public String teacherPage(Model model) {
		// 获取teacherID
		// 查询数据库
		// 把教师信息放入teacherPage
		// 返回teacherPage
		return "teacherPage";
	}

}
